package com.ysu.his.dispensary.controller;

import com.github.pagehelper.PageInfo;
import com.ysu.his.dto.DrugDto;
import com.ysu.his.entity.drug.Drug;
import com.ysu.his.dispensary.service.DrugService;
import com.ysu.his.vo.DrugVo;
import com.ysu.his.vo.common.Result;
import com.ysu.his.vo.common.ResultCodeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 药品相关接口控制器
 * 负责药品的增删改查等接口
 */
@RestController
@RequestMapping("/api/dispensary/prescription")
public class DrugController {
    @Autowired
    private DrugService drugService;

    /**
     * 条件分页查询药品
     * @param page 页码
     * @param limit 每页数量
     * @param drugDto 查询条件
     * @return 分页结果
     */
    @GetMapping("/getDrugByPage/{page}/{limit}")
    public Result getDrugByPage(@PathVariable("page") Integer page,
                                @PathVariable("limit") Integer limit,
                                DrugDto drugDto) {
        PageInfo<DrugVo> pageInfo = drugService.getDrugByPage(page, limit, drugDto);
        return Result.ok(pageInfo);
    }

    /**
     * 添加药品
     * @param drug 药品信息
     * @return 操作结果
     */
    @PostMapping("/addDrug")
    public Result addDrug(@RequestBody Drug drug) {
        drugService.addDrug(drug);
        return Result.ok(null);
    }

    /**
     * 根据id查询药品
     * @param id 药品ID
     * @return 药品信息
     */
    @GetMapping("/getGrugById/{id}")
    public Result getDrugById(@PathVariable("id") Long id) {
        Drug drug = drugService.getDrugById(id);
        return Result.ok(drug);
    }

    /**
     * 修改药品
     * @param drug 药品信息
     * @return 操作结果
     */
    @PutMapping("/updateDrug")
    public Result updateDrug(@RequestBody Drug drug) {
        drugService.updateDrug(drug);
        return Result.build(null, ResultCodeEnum.DRUG_UPDATE_SUCCESS);
    }

    /**
     * 删除药品
     * @param id 药品ID
     * @return 操作结果
     */
    @DeleteMapping("/deleteDrugById/{id}")
    public Result deleteDrugById(@PathVariable("id") Long id) {
        drugService.deleteDrugById(id);
        return Result.ok(null);
    }

} 